﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;

using Microsoft.Reporting.WebForms;
using validarDatos;

public partial class Stdby_Reportes_posicionActivo : System.Web.UI.Page
{
    private void mostrarMensaje(string mensaje)
    {
        //Declaramos un StringBuilder para almacenar el alert que queremos mostrar
        System.Text.StringBuilder sbMensaje = new System.Text.StringBuilder();

        //Aperturamos la escritura de Javascript
        sbMensaje.Append("<script type='text/javascript'>");
        //Le indicamos al alert que mensaje va mostrar
        sbMensaje.AppendFormat("alert('{0}');", mensaje);
        //Cerramos el Script
        sbMensaje.Append("</script>");
        //Registramos el Script escrito en el StringBuilder
        ClientScript.RegisterClientScriptBlock(this.GetType(), "Mensaje", sbMensaje.ToString());
    }



    /*---------------------------------------------------------*/


    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            cargarComboElementoPosicionActivo();
            cargarComboMovexPosicionActivo();
        }
    }



    private void cargarComboElementoPosicionActivo()
    {
        try
        {
            string consulta = "SELECT Id, NombElem FROM TipoElemento WHERE Id <> 1 AND Id <> 5";

            SqlDataAdapter daElemento = new SqlDataAdapter(consulta, CCadenaConexionSql.cadConexion());

            DataSet dsElemento = new DataSet();

            daElemento.Fill(dsElemento);

            ddlIdElemento.DataSource = dsElemento.Tables[0].DefaultView;
            // Asigna el valor a mostrar en el DropDownList
            ddlIdElemento.DataTextField = "NombElem";
            // Asigna el valor del value en el DropDownList
            ddlIdElemento.DataValueField = "Id";
            // Llena el DropDownList con los datos
            ddlIdElemento.DataBind();
        }
        catch { }
    }

    protected void selectChange_ddlIdElemento_PosicionActivo(object sender, EventArgs e)
    {
        ReportViewer1.Visible = false;
        cargarComboMovexPosicionActivo();
    }

    private void cargarComboMovexPosicionActivo()
    {
        try
            {
            string tabla = nombreTablasReportes();

            if (!String.IsNullOrEmpty(tabla))
            {

                string consulta = "SELECT 0 AS Id,'' AS Movex UNION SELECT Id, Movex FROM " + tabla;

                SqlDataAdapter daMovex = new SqlDataAdapter(consulta, CCadenaConexionSql.cadConexion());

                DataSet dsMovex = new DataSet();

                daMovex.Fill(dsMovex);

            
                ddlMovex.DataSource = dsMovex.Tables[0].DefaultView;
                // Asigna el valor a mostrar en el DropDownList
                ddlMovex.DataTextField = "Movex";
                // Asigna el valor del value en el DropDownList
                ddlMovex.DataValueField = "Id";
                // Llena el DropDownList con los datos
                ddlMovex.DataBind();
            }
           
        }
        catch { }
    }

    private string nombreTablasReportes()
    {

        string nombreTabla = null;

        if (ddlIdElemento.Items.Count > 0)
        {
            switch (ddlIdElemento.SelectedItem.Text.Trim())
            {
                case "Cable":
                    nombreTabla = "Cable";
                    break;
                case "Cisterna":
                    nombreTabla = "Cisterna";
                    break;
                case "Generador":
                    nombreTabla = "Generador";
                    break;
                case "Ring Master":
                    nombreTabla = "RingMaster";
                    break;
                case "Semirremolque":
                    nombreTabla = "Semis";
                    break;
                case "Tablero":
                    nombreTabla = "Tablero";
                    break;
                case "Tanque":
                    nombreTabla = "Tanque";
                    break;
                case "Transformador KVA":
                    nombreTabla = "TransfKVA";
                    break;
                case "Transformador MVA":
                    nombreTabla = "TransfMVA";
                    break;
            }
        }
        return nombreTabla;

    }



    /*mostrar reporte*/

    protected void btnMostrarReporte_Click(object sender, EventArgs e)
    {

        lblFechaDesde.Visible = false;
        lblFechaHasta.Visible = false;

        txtFechaDesde.ToolTip = null;
        txtFechaHasta.ToolTip = null;

        bool bandera = true;

        if (!String.IsNullOrEmpty(txtFechaDesde.Text.Trim()))
        {
            if (!CValidaDatos.validaFecha(txtFechaDesde.Text.Trim()))
            {
                txtFechaDesde.ToolTip = CMensajes.mensajeValidaFecha();
                lblFechaDesde.Visible = true;
                bandera = false;
            }
        }

        if (!String.IsNullOrEmpty(txtFechaHasta.Text.Trim()))
        {
            if (!CValidaDatos.validaFecha(txtFechaHasta.Text.Trim()))
            {
                txtFechaHasta.ToolTip = CMensajes.mensajeValidaFecha();
                lblFechaHasta.Visible = true;
                bandera = false;
            }
        }

        if (bandera)
        {
            ReportViewer1.Visible = true;
            reporte();
        }
        else
        {
            ReportViewer1.LocalReport.DataSources.Clear();
            ReportViewer1.Visible = false;
        }
    }

    private void reporte()
    {
        try
        {

            ReportDataSource rds = new ReportDataSource();

            rds.Name = "dsPosicionActivo"; //datset del .rdlc
            rds.Value = darDataSet().Tables[0];

            // Donde fvFact es el control de ReportViewer de la página.
            ReportViewer1.LocalReport.DataSources.Clear();
            ReportViewer1.LocalReport.DataSources.Add(rds);
            ReportViewer1.LocalReport.ReportPath = Server.MapPath("posicionActivo.rdlc");


            //asigno parametros al reporte

            ReportViewer1.LocalReport.SetParameters(new ReportParameter("fDesde", txtFechaDesde.Text.Trim()));


            if (!String.IsNullOrEmpty(txtFechaHasta.Text.Trim()))
            {
                ReportViewer1.LocalReport.SetParameters(new ReportParameter("fHasta", txtFechaHasta.Text.Trim()));
            }
            else
            {
                ReportViewer1.LocalReport.SetParameters(new ReportParameter("fHasta", DateTime.Now.ToShortDateString().Trim()));
            }


            ReportViewer1.LocalReport.Refresh();


        }
        catch (Exception e)
        {
            string pp = e.Message.ToString();
        }


    }



    private DataSet darDataSet()
    {
        DataSet myDS = new DataSet();

        using (SqlConnection objConexion = new SqlConnection(CCadenaConexionSql.cadConexion()))
        {
            try
            {

                SqlCommand MyCommand = new SqlCommand();
                MyCommand.Connection = objConexion;
                MyCommand.CommandType = CommandType.StoredProcedure;
                MyCommand.CommandText = "Reporte_PosicionActivos";

                MyCommand.Parameters.Clear();


                if (!String.IsNullOrEmpty(ddlIdElemento.SelectedItem.Text.Trim()))
                {
                    MyCommand.Parameters.AddWithValue("@IdTablaElem", ddlIdElemento.SelectedValue.Trim());
                }
                else
                {
                    mostrarMensaje("Seleccione un elemento.");

                }

                if (!String.IsNullOrEmpty(ddlMovex.SelectedItem.Text.Trim()))
                {
                    MyCommand.Parameters.AddWithValue("@Movex", ddlMovex.SelectedItem.Text.Trim());
                }
                else
                {
                    MyCommand.Parameters.AddWithValue("@Movex", null);
                }

                if (!String.IsNullOrEmpty(txtFechaDesde.Text.Trim()))
                {
                    MyCommand.Parameters.AddWithValue("@FDesde", txtFechaDesde.Text.Trim());
                }
                else
                {
                    MyCommand.Parameters.AddWithValue("@FDesde", null);
                }

                if (!String.IsNullOrEmpty(txtFechaHasta.Text.Trim()))
                {
                    MyCommand.Parameters.AddWithValue("@FHasta", txtFechaHasta.Text.Trim());
                }
                else
                {
                    MyCommand.Parameters.AddWithValue("@FHasta", null);
                }


                SqlDataAdapter MyDA = new SqlDataAdapter();
                MyDA.SelectCommand = MyCommand;

                if (objConexion.State == ConnectionState.Closed)
                { objConexion.Open(); }


                //nombre del dataset "dsPosicionActivo.xsd" a rellenar
                MyDA.Fill(myDS, "dsPosicionActivo");


            }
            catch { }

            if (objConexion.State == ConnectionState.Open)
            { objConexion.Close(); }

            objConexion.Dispose();
        }

        return myDS;
    }

}